package ${table.basePackage}.dto;
<#-- 引入公共函数和宏 -->
<#include "../base/dto-common.ftl">
<#-- 生成 import 语句（一对多需要 List） -->
<#assign needList = true>
<#include "../base/dto-imports.ftl">

/**
 * ${table.comment!table.entityName} - 数据传输对象（一对多模式）
 * 
 * 遵循Kexio开发规范：
 * - 继承 PageQuery，支持分页查询
 * - 不包含BaseEntity中的审计字段（tenant_id、create_by等）
 * - 不使用Lombok，手写getter/setter，提升调试友好性
 * - 用于接口参数传递、查询条件、导入导出
 * - 使用 @ExcelField 注解支持Excel导入导出
 * - 支持一对多关联数据（主从表）
 * 
 * 对应数据表：${table.tableName!''}
 * 
 * @author ${user.name!"系统"}
 * @since ${now?string('yyyy-MM-dd HH:mm:ss')}
 */
@ExcelSheet(name = "${table.comment!table.entityName}")
public class ${table.entityName}DTO extends PageQuery {

<#-- 生成业务字段 -->
<#include "../base/dto-fields.ftl">

<#-- ==================== 一对多关联字段 ==================== -->
<#if table.ext?? && table.ext.relations??>
  <#list table.ext.relations as r>
    /**
     * ${r.comment!'关联数据'} - ${r.alias}
     * 关联表: ${r.table!''}
     * 外键字段: ${r.foreignKey!''}
     */
    private List<${r.dtoClass}> ${r.alias};
    
  </#list>
</#if>

<#-- 生成范围查询字段（如果有日期类型） -->
<#include "../base/dto-query-fields.ftl">

<#-- 生成 getter/setter 方法 -->
<#include "../base/dto-getters-setters.ftl">

<#-- ==================== 一对多关联字段的 getter/setter ==================== -->
<#if table.ext?? && table.ext.relations??>
  <#list table.ext.relations as r>
    
    /**
     * 获取${r.comment!'关联数据'} - ${r.alias}
     *
     * @return ${r.alias}
     */
    public List<${r.dtoClass}> get${r.alias?cap_first}() {
        return this.${r.alias};
    }
    
    /**
     * 设置${r.comment!'关联数据'} - ${r.alias}
     *
     * @param ${r.alias} ${r.comment!'关联数据'}
     */
    public void set${r.alias?cap_first}(List<${r.dtoClass}> ${r.alias}) {
        this.${r.alias} = ${r.alias};
    }
  </#list>
</#if>

<#-- 生成查询字段的 getter/setter -->
<#include "../base/dto-query-getters-setters.ftl">
}

